import axios from 'axios'
import { getRedirectPath } from '../util'
const AUTH_SUCCESS = 'AUTH_SUCCESS'
const REGISTER_SUCCESS = 'REGISTER_SUCCESS'
const ERROR_MSG = 'ERROR_MSG'
const LOGIN_SUCCESS = 'LOGIN_SUCCESS'
const LOAD_DATA = 'LOAD_DATA'
const LAYOUT = 'LAYOUT'

const initState={
  redirectTo:'',
  isAuth:false,
  msg:'',
  user:'',
  type:''
}
export function user(state=initState,action){
  switch(action.type){
    case AUTH_SUCCESS:
      return {...state,redirectTo:getRedirectPath(action.payload),...action.payload}
    case LOAD_DATA:
      console.log(action.payload)
      return {...state,...action.payload}
    case ERROR_MSG:
      return {...state,isAuth:false,msg:action.msg}
    case LAYOUT:
      return {...initState,redirectTo:'/login'}
    default:
      return state
  }
}
function authSuccess(obj){
  let {pwd,...data} = obj
  return {type:AUTH_SUCCESS,payload:data}
}

function errorMsg(msg){
  return {msg, type:ERROR_MSG}
}
export function loadData(data){
  return {type:LOAD_DATA,payload:data}
}
export function userInfo(){
  return dispatch =>{
    axios.get('/user/info')
      .then(res=>{
        if(res.status===200){
          if(res.data.code ===0){
            //有登录信息
          }else{
            this.props.history.push('/login')
          }
        }
      })
    //用户信息
    //是否登录
    //用户身份
    //是否完善信息
  }
}
export function regisger({user,pwd,repeatpwd,type}){
  if(!user||!pwd||!type){
    return errorMsg('用户名密码必须输入')
  }
  if(pwd!==repeatpwd){
    return errorMsg('两次密码不一样')
  }
  return dispatch=>{
    axios.post('/user/register',{user,pwd,type})
      .then(res=>{
        if(res.status===200&&res.data.code===0){
          dispatch(authSuccess({user,pwd,type}))
        }else{
          dispatch(errorMsg(res.data.msg))
        }
      })
  }

}

export function login({user,pwd}){

  if(!user||!pwd){
    return errorMsg('用户名密码必须输入')
  }
  return dispatch=>{
    axios.post('/user/login',{user,pwd})
      .then(res=>{
        if(res.status===200&&res.data.code===0) {
          console.log(res.data)
          dispatch(authSuccess(res.data.data))
        }else{
          dispatch(errorMsg(res.data.msg))
        }
      })
  }
}

export function update(data){
  return dispatch =>{
    axios.post('/user/update',data)
      .then(res=>{
        if(res.status===200&&res.data.code===0) {
          dispatch(authSuccess(res.data.data))
        }else{
          dispatch(errorMsg(res.data.msg))
        }
      })
  }
}

export function logoutSubmit(){
  return {type:LAYOUT}
}


